package com.cloud.encrypting_cloud_storage.entity;

import lombok.Data;
import lombok.NoArgsConstructor;

import javax.persistence.Entity;
import javax.persistence.Transient;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author leon
 * @Description: TODO
 * @date 2022年04月08日 17:41
 */
@Entity
@Data
@NoArgsConstructor
public class FileSystem extends BaseEntity implements Serializable {
    /**
     * 文件唯一标识
     */
    @NotNull
    private Long inode;
    /**
     * 文件名
     */
    private String filename;
    /**
     * 文件类型
     */
    private String filetype;
    /**
     * 文件大小
     */
    private Double size;
    /**
     * 创建时间
     */
    private LocalDateTime ctime;
    /**
     * Modify time 修改时间
     */
    private LocalDateTime mtime;
    /**
     * Access time 访问时间
     */
    private LocalDateTime atime;
    /**
     * 父亲文件(文件夹的父亲文件是上个文件夹，文件的是父亲文件是当前文件夹)
     */
    private Long parentInode;
    /**
     * 是否是文件夹
     */
    private Boolean folder;
    /**
     * 当前文件夹文件个数
     */
    private Integer childSize;
    /**
     * 父文件夹文件个数
     */
    private Integer parentSize;

    /**
     * 文件存储块，包含文件的所以内容
     */
    @Transient
    private List<FileBlock> fileBlockList;

}
